package cn.janescott.framework.core.utils;

import java.text.SimpleDateFormat;
import java.util.HashMap;
import java.util.Map;

/**
 * 日期格式化工具
 *
 * @author scott
 * @date 2019/2/13
 */
public final class DateFormatUtils {

    /**
     * 年
     */
    public static final String FMT_YEAR = "yyyy";
    /**
     * 年-月
     */
    public static final String FMT_YEAR_MONTH = "yyyy-MM";
    /**
     * 年-月-日
     */
    public static final String FMT_YEAR_MONTH_DATE = "yyyy-MM-dd";
    /**
     * 年-月-日 时:分:秒
     */
    public static final String FMT_Y_M_D_H_M_S = "yyyy-MM-dd HH:mm:ss";

    private static ThreadLocal<Map<String, SimpleDateFormat>> formatter =
            ThreadLocal.withInitial(HashMap::new);

    /**
     * 获取一个年月日的格式化对象
     *
     * @return
     */
    public static SimpleDateFormat getInstance() {
        return getInstance(FMT_YEAR_MONTH_DATE);
    }

    /**
     * 根据模式获取格式化对象
     *
     * @param pattern
     * @return
     */
    public static SimpleDateFormat getInstance(String pattern) {
        Map<String, SimpleDateFormat> collect = formatter.get();

        SimpleDateFormat simpleDateFormat = collect.get(pattern);
        if (null == simpleDateFormat) {
            simpleDateFormat = new SimpleDateFormat(pattern);
            collect.put(pattern, simpleDateFormat);
        }
        return simpleDateFormat;
    }
}
